summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/renderer_opengl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_opengl/renderer_opengl.h')
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h93
1 files changed, 4 insertions, 89 deletions
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h
index 18699610a..c4625c96e 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.h
+++ b/src/video_core/renderer_opengl/renderer_opengl.h
@@ -10,7 +10,6 @@
#include "video_core/renderer_base.h"
#include "video_core/renderer_opengl/gl_device.h"
-#include "video_core/renderer_opengl/gl_fsr.h"
#include "video_core/renderer_opengl/gl_rasterizer.h"
#include "video_core/renderer_opengl/gl_resource_manager.h"
#include "video_core/renderer_opengl/gl_shader_manager.h"
@@ -25,37 +24,13 @@ namespace Core::Frontend {
class EmuWindow;
}
-namespace Core::Memory {
-class Memory;
-}
-
-namespace Layout {
-struct FramebufferLayout;
-}
-
namespace Tegra {
class GPU;
}
namespace OpenGL {
-/// Structure used for storing information about the textures for the Switch screen
-struct TextureInfo {
- OGLTexture resource;
- GLsizei width;
- GLsizei height;
- GLenum gl_format;
- GLenum gl_type;
- Service::android::PixelFormat pixel_format;
-};
-
-/// Structure used for storing information about the display target for the Switch screen
-struct ScreenInfo {
- GLuint display_texture{};
- bool was_accelerated = false;
- const Common::Rectangle<float> display_texcoords{0.0f, 0.0f, 1.0f, 1.0f};
- TextureInfo texture;
-};
+class BlitScreen;
class RendererOpenGL final : public VideoCore::RendererBase {
public:
@@ -65,7 +40,7 @@ public:
std::unique_ptr<Core::Frontend::GraphicsContext> context_);
~RendererOpenGL() override;
- void SwapBuffers(const Tegra::FramebufferConfig* framebuffer) override;
+ void Composite(std::span<const Tegra::FramebufferConfig> framebuffers) override;
VideoCore::RasterizerInterface* ReadRasterizer() override {
return &rasterizer;
@@ -76,28 +51,8 @@ public:
}
private:
- /// Initializes the OpenGL state and creates persistent objects.
- void InitOpenGLObjects();
-
void AddTelemetryFields();
-
- void ConfigureFramebufferTexture(TextureInfo& texture,
- const Tegra::FramebufferConfig& framebuffer);
-
- /// Draws the emulated screens to the emulator window.
- void DrawScreen(const Layout::FramebufferLayout& layout);
-
- void RenderScreenshot();
-
- /// Loads framebuffer from emulated memory into the active OpenGL texture.
- void LoadFBToScreenInfo(const Tegra::FramebufferConfig& framebuffer);
-
- /// Fills active OpenGL texture with the given RGB color.Since the color is solid, the texture
- /// can be 1x1 but will stretch across whatever it's rendered on.
- void LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color_b, u8 color_a,
- const TextureInfo& texture);
-
- void PrepareRendertarget(const Tegra::FramebufferConfig* framebuffer);
+ void RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers);
Core::TelemetrySession& telemetry_session;
Core::Frontend::EmuWindow& emu_window;
@@ -108,49 +63,9 @@ private:
StateTracker state_tracker;
ProgramManager program_manager;
RasterizerOpenGL rasterizer;
-
- // OpenGL object IDs
- OGLSampler present_sampler;
- OGLSampler present_sampler_nn;
- OGLBuffer vertex_buffer;
- OGLProgram fxaa_vertex;
- OGLProgram fxaa_fragment;
- OGLProgram present_vertex;
- OGLProgram present_bilinear_fragment;
- OGLProgram present_bicubic_fragment;
- OGLProgram present_gaussian_fragment;
- OGLProgram present_scaleforce_fragment;
OGLFramebuffer screenshot_framebuffer;
- // GPU address of the vertex buffer
- GLuint64EXT vertex_buffer_address = 0;
-
- /// Display information for Switch screen
- ScreenInfo screen_info;
- OGLTexture aa_texture;
- OGLFramebuffer aa_framebuffer;
-
- OGLProgram smaa_edge_detection_vert;
- OGLProgram smaa_blending_weight_calculation_vert;
- OGLProgram smaa_neighborhood_blending_vert;
- OGLProgram smaa_edge_detection_frag;
- OGLProgram smaa_blending_weight_calculation_frag;
- OGLProgram smaa_neighborhood_blending_frag;
- OGLTexture smaa_area_tex;
- OGLTexture smaa_search_tex;
- OGLTexture smaa_edges_tex;
- OGLTexture smaa_blend_tex;
-
- std::unique_ptr<FSR> fsr;
-
- /// OpenGL framebuffer data
- std::vector<u8> gl_framebuffer_data;
-
- /// Used for transforming the framebuffer orientation
- Service::android::BufferTransformFlags framebuffer_transform_flags{};
- Common::Rectangle<int> framebuffer_crop_rect;
- u32 framebuffer_width;
- u32 framebuffer_height;
+ std::unique_ptr<BlitScreen> blit_screen;
};
} // namespace OpenGL